package models

import (
	"fmt"
	"time"
)

// TODO 此 qld_outlet_area_ext.go 文件是统计故障使用，后因要改变统计方式 暂未使用此文件内的内容

type QldOutletAreaExt struct {
	Id            int       `gorm:"column:id;type:int(11);primary_key;AUTO_INCREMENT" json:"id"`
	AreaId        int64     `gorm:"column:area_id;type:int(11);NOT NULL" json:"area_id"`
	Saleman       string    `gorm:"column:saleman;type:varchar(20);comment:销售人员" json:"saleman"`
	Salephone     string    `gorm:"column:salephone;type:varchar(20);comment:销售人员手机" json:"salephone"`
	Install       int       `gorm:"column:install;type:int(11);comment:0 全来电走电 1 物业走电" json:"install"`
	BusinessMode  int       `gorm:"column:business_mode;type:int(11);comment:0采购 1合作建桩" json:"business_mode"`
	Installfee    float64   `gorm:"column:installfee;type:decimal(8,2);comment:安装费用" json:"installfee"`
	DevopsStatus  int       `gorm:"column:devops_status;type:tinyint(1);default:1;comment:1:正常 2:未通电3: 维修中4：待维修 5：已关闭;NOT NULL" json:"devops_status"`
	Street        string    `gorm:"column:street;type:varchar(255);comment:所属街道信息" json:"street"`
	Community     string    `gorm:"column:community;type:varchar(255);comment:所属社区信息" json:"community"`
	CommunityCode string    `gorm:"column:community_code;type:varchar(255);comment:小区编码" json:"community_code"`
	StreetCode    string    `gorm:"column:street_code;type:varchar(255);comment:街道编码" json:"street_code"`
	FaultStatus   int       `gorm:"column:fault_status;type:tinyint(4);comment:故障状态：故障状态 1 无故障 2 部分故障 3 全部故障" json:"fault_status"`
	FaultTime     time.Time `gorm:"column:fault_time;type:datetime;comment:最新故障时间" json:"fault_time"`
	FaultSort     int       `gorm:"column:fault_sort;type:int(11);comment:故障数据排序" json:"fault_sort"`
}

func (m *QldOutletAreaExt) TableName() string {
	return "qld_outlet_area_ext"
}

func AddQldOutletAreaExt(ext *QldOutletAreaExt) (*QldOutletAreaExt, error) {
	err := DB.Create(&ext).Error
	if err != nil {
		return nil, err
	}
	return ext, nil
}

func GetQldOutletAreaExt(areaId int64) (*QldOutletAreaExt, error) {
	var ext []*QldOutletAreaExt
	err := DB.Debug().Model(&QldOutletAreaExt{}).Select("id,area_id,devops_status,fault_status,fault_time,fault_sort").
		Where("area_id=?", areaId).Limit(1).Find(&ext).Error
	if err != nil {
		return nil, err
	}

	if len(ext) > 0 {
		return ext[0], nil
	} else {
		return &QldOutletAreaExt{}, nil
	}

}

func UpdateQldOutletAreaExt(areaId int64, dataMap map[string]interface{}) (int64, error) {
	//dataMap["update_time"] = time.Now()
	result := DB.Model(&QldOutletAreaExt{}).Where("area_id=?", areaId).Updates(dataMap)
	if result.Error != nil {
		return 0, result.Error
	}

	if result.RowsAffected == 0 {
		return 0, fmt.Errorf("暂无修改记录,请检查Id是否正确")
	}

	return result.RowsAffected, nil
}
